When storing data in a storage module, such as a solid state drive (SSD), the data is often stored together with parity bits, and the data and parity bits form what is known as an error correction code (ECC) code word. The process of reading a code word from memory often involves the storage module translating a request to read data from a logical address into various instructions that are needed to actually read the data from a physical address in a memory die. When the read request requires multiple code words to be read from memory, the instructions for these code words are stored in various queues in the storage module, so they can be executed serially to read each code word from the memory die.
After a code word is read from the memory die, the storage module decodes the code word to check for any errors in the data and attempts to correct any such errors. If an error is uncorrectable, the storage module can read the code word again with different read parameters in an attempt to avoid encountering the error. However, if the queues in the storage module store instructions for the other code words to be read, the code word cannot immediately be re-read, as there would be other read instructions ahead of it in the queue. Also, if the storage module operates in a “strict data ordered” environment where code words need to be provided to the host in the same order in which they are read from the memory die, the code word to be re-read cannot be placed at the end of the queue, as that would disrupt the order. So, to re-read the code word, the queues would need to be flushed of the instructions for reading the other code words, so the instruction to re-read the code word can be processed first. After the code word is re-read and decoded without incident, the storage module would re-generate the instructions for the other code words and store them in the queues for execution.